package commander;

import fileoperation.FileReader;
import gitobject.*;
import sha1.SHA1;
//import org.apache.commons.cli.Options;


import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
/*
1、通过git add [filename]的命令，将文件添加到暂存区中
2、暂存区信息应该存在.jit目录下。（可以就存储在index文件中）
3、如果工作区中的文件内容和当前commit中所保存的文件内容一致（没有修改），那么不应该将其add入暂存区中，
调用FileStatus.fileChanged()函数。
4、需要打印异常信息，比如add了一个不存在的文件。
 */

public class add extends Command{
    public void add(String fileName) throws Exception {
        File f = new File(workingDir + fileName);//指定工作路径+文件名
        if(!f.exists()) {
            System.out.println("file not exists");
            //add了一个不存在的文件时打印异常
            return;
        }
        String append = "";
        if(f.isDirectory()){
            try {
                Tree tree = new Tree(f);
                append = tree.toString();
                tree.writeObject();
            //            append = "040000 tree " + key + " " + f.getName();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
        else{
            try {
                Blob blob = new Blob(f);
                append = blob.toString();
                blob.writeObject();
                //            append = "100644 blob " + key + " " + f.getName();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }

 //       System.out.println(append);
 //       String indexContent = FileReader.readFileValue(this.index);
 //       ArrayList<String> indexList = FileReader.readByBufferReader(indexContent);

        FileWriter fw = new FileWriter(this.index, true);//true表示字节写入末尾
        PrintWriter pw = new PrintWriter(fw);
 //       fw.write(append);
        pw.println(append);//add完后显示序列化后的文件名,append逐行写入并换行
        fw.close();
        pw.close();
    }

   /* public static void main(String[] args){
        try{
            new add().add("test.txt");//需要加.txt
            System.out.println(new add().workingDir);
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }*/
}